/**
 * @License: (C) Copyright 2013-2022
 * @Contact: abcque@outlook.com
 * @IDE: IntelliJ IDEA
 * @Encoding: utf-8
 * @Project: st2214st2215
 * @Package: PACKAGE_NAME
 * @File: ClassTest.java
 * @Time: 2023/5/30 15:33
 * @Author: abcque
 * @Description:
 * @Modifier:
 * @ModifyDate:
 * @ModifyRemark:
 */
public class ClassTest {
    public static void main(String[] args) {
        // 方法一、一直类名，直接使用 .class 属性
        Class<String> stringClass = String.class;

        // 方法二、已知一个类的实例，通过调用 getClass 方法获取
        String info = "abc";
        Class<? extends String> infoClass = info.getClass();

        // 方法三、一直类名和类的所在位置（类所在的包），可以通过 Class.forName 方法获取
        String className = "Person";
        try {
            Class<?> personClass = Class.forName(className);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        // 方法四：使用 ClassLoader 类加载指定的类
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        try {
            Class<?> loadClass = systemClassLoader.loadClass("Person");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
